<?php
namespace app\index\controller;
use app\index\model\User;
use think\Controller;
use think\Request;
use think\Db;
use think\Cookie;

use \traits\controller\Jump;

/**
 *
 * 用于登陆验证的 控制器
 * 用户名
 * 密码
 * 验证码
 * 以及判断是否已经登陆过，已经登陆过，直接跳转主界面即可
 * 
 */
class Login extends Controller{
    /**
     * 用于测试验证码是否正确
     * @param string $code  用户输入的验证码
     * @return boolean
     */
    public function check($code=''){
        if(!captcha_check($code))
        {          
            return false;
        } else {           
            return true;
        }
    }

    
    
    
    /**
     * 做登陆验证
     * 首先， 判断验证码是否正确，验证码不正确的时候， 弹出error验证码错误信息，返回登陆界面
     *       验证码正确的话，
     *       测试用户名、密码是否正确
     *           正确的话，登陆成功，设置cookie，保存登陆信息
     *           不正确的话，输出，用户名或密码不正确，重新登陆
     * @param Request $request
     */
    public function doLogin(Request $request){

         
        $code=$request->param('code');  
        $autoFlag=$request->param('autoFlag');
       
        if(!$this->check($code))
        {
            $this->error('验证码错误');
            return;
        }
        
        $name=$request->param('name');
        $password=md5($request->param('password'));
        
        $result=Db::name('user')
        ->where('name',$name)
        ->where('password',$password)
        ->find();
                
        if(count($result)>0)
        {
            $adminID=Db::name('user')
            ->where('name',$name)
            ->where('password',$password)
            ->value('id');

           if($autoFlag)
           {
              Cookie::set('adminName',$name,10*24*3600);
              Cookie::set("adminID",$adminID,10*24*3600);
           }               
            $this->success('欢迎登陆！','index\login\hello',$name);         
        }else{
            //echo "用户名或密码错误";
            $this->success('用户名或密码错误！','index\login\login',$name);                
        }
    }

    /** 用户登陆界面
     *
     * 首先根据cookie中记录,判断是否已经登陆
     * 如果已经登陆，则直接跳转操作界面
     * 如果还没有登陆
     * 则：
     * 调出登陆界面的模板，在其中输入用户名、密码、验证码等信息
     * 进行提交 验证。
     *
     * 处理模板的函数为doLogin
     *
     *
     * @param Request $request
     */
    public function login(Request $request){

        $adminName=$request->cookie('adminName');
        $adminID=$request->cookie('adminID');

        if($adminName&&$adminID)
        {
            $result=Db::name('user')
            ->where('name',$adminName)
            ->where('id',$adminID)
            ->find();

            if(count($result)>0){
               $this->success('欢迎重新归来！','index\login\hello',$adminName);
              }
        }else{
            
            $this->view->replace(['__PUBLIC__'=>'/static',]);
            return view();
        }          
    }
    
    //注销
    public function logoff()
    {
        Cookie::delete('adminName');
        Cookie::delete('adminID');
        $this->success('成功注销','index\login\login');
    }

/**
 * 后台展示页面
 * @param Request $request
 * @return mixed|string
 */
    public function hello(Request $request)
    {
        $this->assign('name',$request->cookie('adminName'));
        $this->view->replace(['__PUBLIC__'=>'/static',]);
           
        return $this->fetch('hello');
       // return view('','',['__PUBLIC__'    => '/static']);
    }

    /**
     *  用户注册界面
     *  用户名、密码、邮箱等
     * @return mixed|string
     */
    public function register()
    {
        $this->view->replace(['__PUBLIC__'=>'/static',]);
        return $this->fetch();
    
    }
    
    /**
     * 注册验证
     * @return string|\think\true
     */
    public function doRegister(){
               
        $password=$this->request->param('password');
        $assure_password=$this->request->param('assure_password');
        
      if(strcmp($password,$assure_password)!=0) 
        {
            $this->error('输入的密码不相同','register');
        }else        
        {
         
            $data = input('post.');
            // 数据验证
            $result = $this->validate($data,'User');
                      
            if (true !== $result) {
                             
                $this->error($result,'register');
              
            }
            
            
            $name=$this->request->param('name');
            $result=User::get(['name'=>$name]);
            if($result)
            {
                $this->error('该用户已存在，请换个用户名','register');
            }
            
            $user=new User;
            $user->name=$name;
                                              
            $user->password=md5($password);
            $user->email=$this->request->param('email');

                       
            if($user->save()){
                $this->success('注册成功','login');
            }else{
                 $this->error('输入有误','register');
            }
        }
    }
    
    
}


